package cn.com.qtgl.apis.builtin.model.vo;

import cn.melonlib.cores.commons.model.entity.ApiEntity;
import cn.melonlib.cores.commons.model.entity.StringIdEntity;
import cn.melonlib.cores.identification.model.entity.Identification;
import cn.melonlib.cores.model.anno.ModelComment;
import cn.melonlib.cores.model.anno.ModelIgnore;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.util.List;

@Data
@EqualsAndHashCode(callSuper = true)
@ModelComment("用户信息")
public class IamUser extends StringIdEntity implements ApiEntity, Identification<String> {

    @ModelComment("姓名")
    private String name;

    @ModelComment("账号")
    private String account;

    @ModelComment("登陆标识")
    @ModelIgnore
    private String loginName;

    @ModelComment("用户业务标识(登录名/学工号/身份认证账号名称)")
    private String username;

    @ModelComment("应用关联账号")
    private String openid;

    @ModelComment("证件类型")
    private String cardType;

    @ModelComment("证件号")
    private String cardNo;

    @ModelComment("租户ID")
    private String tenantId;

    @ModelComment("时间戳")
    private Long timestamp;

    @ModelComment("电子邮件地址")
    private String email;

    @ModelComment("电话")
    private String phone;

    @ModelComment("是否显示")
    private Boolean express;

    @ModelComment("是否禁用")
    private Boolean disabled;

    @ModelComment("来源")
    private String source;

    @ModelComment("数据源")
    private String dataSource;

    @ModelComment("性别")
    private String sex;

    @ModelComment("标签")
    private String tags;

//    @ModelComment("扩展信息")
//    private String meta;

    @ModelComment("是否激活")
    private Boolean active;

    @ModelComment("激活时间")
    private Long activeTime;

    @ModelComment("描述")
    private String description;

    @ModelComment("职位信息")
    private List<Position> positions;

    @ModelComment("接口权限")
    private List<ApiPermission> permissions;

    @ModelComment("持有证书")
    private List<Certificate> certificates;

    @ModelComment("租户信息")
    private IamTenant tenant;
}
